using System;
using System.Collections.Generic;

namespace UDS.Management.Data.Package
{
    public interface IDBPackage
    {
        DatabaseManifest Manifest
        {
            get;
        }
        IEnumerable<SqlSchemaChangeFamily> GetSchemaChanges();
        IEnumerable<SqlSource> GetStoredProcedures();
        SortedDictionary<string, StoredProcedureDefinition> GetStoredProceduresWithGrants();
        IEnumerable<SqlSource> GetViews();
        IEnumerable<SqlSource> GetJobs();
        IEnumerable<SqlSource> GetXMLJobs();
        IEnumerable<SqlSource> GetTriggers();
        IEnumerable<SqlSource> GetFunctions();
        IEnumerable<SqlSource> GetPreSteps();
        IEnumerable<SqlSource> GetPostSteps();
        IEnumerable<SqlSource> GetConfigurationScripts();
        IEnumerable<ScriptSource> GetResourceScripts(string type);
        IEnumerable<SqlSource> GetReplicationScripts();
        IEnumerable<ScriptSource> GetReplicationDefinitions();
        SortedDictionary<string, SQLJobDefinition> GetManifestSQLJobData();
        string GetDatabaseName();
        string GetPackageName();
        string GetPackageVersion();
        string GetPackageDescription();
        Guid GetDatabaseId();
        bool NeedsCleanup
        {
            get;
        }
    }
}
